class Solution:
    def jump(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        给定一个非负整数数组，你最初位于数组的第一个位置。
        数组中的每个元素代表你在该位置可以跳跃的最大长度。
        你的目标是使用最少的跳跃次数到达数组的最后一个位置。
        """
        if len(nums) <= 1:
            return 0
        if len(nums) == 2:
            return 1
        i, jump = 0, 0
        while i < len(nums):
            if i+nums[i] >= len(nums)-1:
                jump += 1
                break
            #print(111)
            part = nums[i+1:nums[i]+i+1]
            #print(part)
            j = 1
            max_v, max_i = 0, 0
            while j <= len(part):
                #print(222)
                if part[j-1] + j > max_v:
                    max_v = part[j-1] + j
                    max_i = j
                j += 1
            #print(max_i)
            i = max_i + i
            jump += 1

        return jump


sol = Solution()
nums = [2,3,1,1,4]
nums1 = [1,2,3]
nums2 = [2,3,1]
res = sol.jump(nums)
print(res)

